#include <bits/stdc++.h>
using namespace std;
const int N=2e4+20;
int s,n,m,dp[N],a[110][110],ans;
// dp[i][j]第i个城堡,派出了j个士兵的最大利润
signed main()
{
	scanf("%d%d%d",&s,&n,&m);
	for(int i=1; i<=s; i++)
		for(int j=1; j<=n; j++)
		{
			scanf("%d",&a[j][i]);
			a[j][i]=a[j][i]*2+1;//这里是第j个城堡,第i个对手,这样是为了便于排序
		}
	for(int i=1; i<=n; i++)
		sort(a[i]+1,a[i]+1+s);//排序
	for(int i=1; i<=n; i++)//第i个城堡
		for(int j=m; j>=0; j--)//背包容量
			for(int k=1; k<=s; k++) //第k个对手
				if(j>=a[i][k])//可以放置
					dp[j]=max(dp[j-a[i][k]]+k*i,dp[j]);
	for(int i=0; i<=m; i++)
		ans=max(ans,dp[i]);
	printf("%d\n",ans);
	return 0;
}
